In general, a network device receives and sends network packets through one or more input/output (I/O) cards. Examples of such network devices include firewalls, attack prevention devices, intrusion detection devices, acceleration devices, routers, switches, gateways, proxy servers, and intelligent hubs.
To assist and accelerate processing of the network packets, some computer network devices include multiple processors. For example, a network device may include a central processor (referred to herein as the “remote processor”), and one or more additional processors (referred to individually herein as a “local processor”) that provides media access control to the network via one or more network interfaces. In such devices, when the network device receives packets, the local processor allocates an allocation block, i.e., storage space, within a local memory. This local memory may be located in close proximity to the local processor. The local processor may then temporarily store the network packet in the allocation block of local memory.
In some situations, the remote processor in the network device may need to process network packets buffered by the local processor. For example, a remote processor may need to scan the network packets to check for viruses or determine whether a network attack currently exists. In these situations, the local processor forwards at least some portion of the network packets to the remote processor. That is, the local processor may not send each packet in its entirety, but rather some small portion. In addition, the local processor may send one or more buffer pointers to the remote processor, where the buffer pointers indicate locations of the network packet in the local memory. Subsequently, if the remote processor requires additional portions of the network packets that were not transferred to the remote processor, the remote processor may use the buffer pointers to retrieve the remaining portions of the network packets from local memory. After processing the network packets, the remote processor may pass the partial network packet along with the buffer pointer back to the local processor. After performing any further processing, the local processor may forward the network packet back to an I/O card for retransmission through the network. At this time, the local processor uses the buffer pointers returned by the remote processor to deallocate the section in local memory used to store the network packet.